﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cofe.Core
{
    /// <summary>
    /// Used by EntryList.GetCOFEProperty to specify how to return a property value, if the property is not supported by SecondaryPropertyProvider.
    /// In the case of SecondaryPropertyProvider, 
    /// </summary>
    [Flags]
    public enum 
        PropertyRetrivalOptions : int
    {
        /// <summary>
        /// Property is retrieved from SecondaryPropertyProvider, so this options is not applied.
        /// or use default option.
        /// </summary>
        Default = 1 << 0,
        /// <summary>
        /// Return from the first entry only.
        /// </summary>
        First = 1 << 1,

        HandleOnes = 1 << 2,
        /// <summary>
        /// For Int16, Int32, Int64 or string only, combine the output of all entries.
        /// </summary>
        Aggregate = 1 << 3, 

        /// <summary>
        /// Get only, return minium value from all output from created property providers.
        /// </summary>
        Min = 1 << 4,

        /// <summary>
        /// Get only, return maxium value from all output from created property providers
        /// </summary>
        Max = 1 << 5,

        /// <summary>
        /// Read or Write from Cache only.
        /// </summary>
        CacheOnly = 1 << 6
    }
}
